/*
 * 发送短信，发送前校验手机号是否正确，发送后进行倒计时处理
 * */
import { ref } from 'vue';
// import { getMessageCode } from '@/api/base'

/**
 *
 * @param formRef
 * @param messageType 短信类型 0：登录，1：使用短信找回密码
 */
export function useSms(formRef, messageType) {
  const allowSend = ref(true); // 是否允许发送短信
  const time = ref(60); // 短信倒计时
  let interval = 0; // 计时
  const mobile = ref(''); // 发送短信的手机号
  function getSmsCode() {
    if (allowSend.value) {
      if (!formRef) {
        if (/^1[0-9]{10}$/.test(mobile.value)) {
          sendMessage();
        } else {
          $message.warning('请输入正确的验证码');
        }
        return false;
      }
      formRef.value.validateField('mobile', (valid) => {
        if (valid) {
          sendMessage();
        }
      });
    }
  }
  async function sendMessage() {
    try {
      allowSend.value = false;
      time.value = 60;
      interval = setInterval(() => {
        if (time.value > 0) {
          time.value--;
        } else {
          clearInterval(interval);
          allowSend.value = true;
        }
      }, 1000);
      await getMessageCode({ mobile: mobile.value, type: messageType });
    } catch (e) {
      clearInterval(interval);
      allowSend.value = true;
    }
  }
  return {
    allowSend,
    time,
    mobile,
    getSmsCode,
  };
}
